Peer-to-Peer (P2P) systems are growing in popularity. These types of systems may be used to share content between hundreds or even thousands of users. Such systems may share static content, such as a music file, or streaming content, such as a video feed. In contrast to a purely centralized distribution model, P2P distribution relies on the cumulative network resources of the peers in the network. In general, peers act as both clients and servers to one another—requesting and receiving data from one peer while serving and transmitting data to another. This cooperation is a fundamental advantage in a P2P system.
One problem that arises in P2P systems is a lack of fairness in bandwidth allocation. That is, some peers do not contribute service commensurate with what they receive, or vice versa. As a result, peers are disincentivized from contributing upload bandwidth and free-riders, those that receive data with little or no reciprocal contributions, become more prevalent. As a result, in limited bandwidth situations, peers throughout the P2P system will observe poor data transmission regardless of the contribution of any given peer. In addition, when the provisioning is low, the client can easily take all of the available upload bandwidth from the users who already contribute a lot, and cripple other network-bound processes running on the users' machines. In the other extreme, if users were allowed to configure their bandwidth contribution, without any incentive mechanism, P2P streaming systems would invite a lot of free-riding and degrade performance even further.
Free-riding, while a problem in P2P file-sharing systems, is even more significant in P2P streaming systems. While in most file-sharing systems users would prefer faster downloads, they may be satisfied with an eventual download completion. In contrast, when a user watches a stream in real-time, any drop in the download rate results in missed packets and decreased quality of the stream. Thus, for a system without an incentive mechanism, an increase in free-riding may result in poor quality for all users.